Bu yüzden, bir yapı listesi ile ilgili olarak list :: sort () 'nin doğru kullanımını bulmakta biraz güçlük çekiyorum. İşte ilgili kod: yapı öğrencisi { char firstnm [20], lastnm [20]; int id, derece; }; list <öğrenci> sList; // Alakasız kod ... cout << "Lütfen kendi adınızı, kimliğinizi ve derecenizi girin. (Örn: ilk mylast 0 12) \ n"; cin >> data.firstnm >> data.lastnm >> data.id >> data.grade; sList.push_back (veri); sList.sort (); Çözmeye çalıştığım problem id'ye göre sıralamak için sList.sort () kullanmak. Bununla birlikte, list :: sort () 'a nasıl düzgün bir şekilde aktaracağımı bilmiyorum. Herhangi bir yardım / zaman için şimdiden teşekkürler! DÜZENLEME: Çözüm bunu basitçe yapıma eklemekti bool operatörü <(const student & cmp) const { dönüş kimliği
2021-01-22 08:22:33
Std :: sort'a bir göz atmalısınız. (https://en.cppreference.com/w/cpp/algorithm/sort) Bu işlevin birden çok tanımı vardır ve bir tanesi neyi sıralamak istediğinizi belirtebilirsiniz. Ayrıca, bu gönderiye bir göz atın, bence ihtiyacınız olan şey: https://stackoverflow.com/a/21234017/6663947 Düzenle : bu bir karşılaştırıcı örneği: sList.sort ([] (const öğrenci & a, const öğrenci & b) {dönüş a.idgeçersiz sıralama (Karşılaştırma karşılaştır); Listenizdeki öğrenci nesnelerini anahtar kimliğine göre artan düzende sıralamak istediğinizi varsayarsak. Kullanıcı tanımlı öğrenci sınıfınız için